package com.example.test4;

import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;

import androidx.annotation.Nullable;

public class MyService  extends Service {
    private int count = 0;
    private boolean quit = false;
    private MyServiceBinder myServiceBinder = new MyServiceBinder();


    class MyServiceBinder extends Binder {
        public int getCount() {
            return MyService.this.count;
        }
    }


    @Override
    public IBinder onBind(Intent intent) {
        return myServiceBinder;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        // 创建新Thread，如果service启动每秒钟count++，如果quit为真则退出
        new Thread(new Runnable() {
            @Override
            public void run() {
                while (!quit) {
                    try {
                        Thread.sleep(1000); // 每秒执行一次
                    } catch (InterruptedException e) {
                        // 如果线程在休眠时被中断，也应该退出循环
                        quit = true; // 设置退出标志
                    }
                    if (!quit) { // 再次检查quit标志，防止在sleep后quit变为true
                        count++;
                    }
                }
            }
        }).start(); // 启动线程
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // 如果服务是通过startService()启动的，则会调用此方法
        // 这里我们主要通过绑定方式使用服务，但保留此方法以供参考
        return super.onStartCommand(intent, flags, startId);
    }

    @Override
    public boolean onUnbind(Intent intent) {
        // 当所有客户端都通过unbindService()解绑后调用
        // 默认返回false。如果返回true，则下次客户端绑定时会调用onRebind()而不是onBind()
        return super.onUnbind(intent);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        // 设置quit为true，以通知后台线程停止运行
        this.quit = true;
    }

}
